package cn.mdx.service;

import cn.mdx.common.beans.User;
import cn.mdx.common.utils.CheckUtil;
import cn.mdx.mapper.VoMapper;
import cn.mdx.pojo.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;

/**
 * @author 谢模全
 */
@Service
public class VoService {

    private static final Logger logger = LoggerFactory.getLogger(VoService.class);

    @Autowired
    private VoMapper voMapper;


    /**
     * 用户id查询某个用户的详细资料
     * @param uid 用户id
     * @return 技术方详细信息
     */
    public SkillUserVO selectSkillUserById(Integer uid){
        CheckUtil.notNull(uid,"用户id为空");
        logger.info("[查询某个用户的详细资料，[uid:{}]]]",uid);
        return voMapper.selectSkillUserById(uid);
    }

    /**
     * 用户id查询某个用户所有发布的所有服务
     * @param uid 用户id
     * @return 资料
     */
    public ArrayList<ServiceVo> getServiceById(Integer uid) {
        CheckUtil.notNull(uid,"用户id为空");
        logger.info("[查询某个的所有服务，[uid:{}]]",uid);
        return voMapper.getServiceById(uid);
    }

    /**
     *  用户id查询某个用户所有发布的需求
     * @param uid  用户id
     * @return 自己所有发布的需求
     */
    public ArrayList<DemandVO> getDemandList(Integer uid) {
        CheckUtil.notNull(uid,"用户id为空");
        logger.info("[查询某个用户所有发布的需求，[uid:{}]]",uid);
        return voMapper.getDemandVo(uid);
    }

    /**
     * 分页查询所有技术人员信息
     * @param page 第几页
     * @param info 模糊查找关键词，可以为空
     * @return
     */
    public PageInfo<SkillListVO> getSkillList(Integer page,String info){
        CheckUtil.notNull(page,"页码为空");
        logger.info("[分页查询所有技术人员信息中,[page:{},info:{}]]",page,info);
        PageHelper.startPage(page,2,"uid desc");
        PageInfo<SkillListVO> pageInfo = new PageInfo<SkillListVO>(voMapper.getSkillList(info));
        logger.info("[成功]");
        return pageInfo;
    }

    /**
     * 分页查询所有过审资源
     * @param page 第几页
     * @param info 模糊查找关键词，可以为空
     * @return 部分过审资源
     */
    public PageInfo<ServiceVo> findServiceList(Integer page,String info) {
        CheckUtil.notNull(page,"页码为空");
        logger.info("[分页查询所有过审资源中,[page:{},info:{}]]",page,info);
        PageHelper.startPage(page,10,"sid desc");
        PageInfo<ServiceVo> pageInfo = new PageInfo<ServiceVo>(voMapper.findServiceList(info));
        logger.info("[成功]");
        return pageInfo;
    }

    /**
     * 根据主键查询对接成果
     * @param rid 对接成果id
     * @return 一条对接成果记录
     */
    public ResultVO findResultVO(Integer rid){
        CheckUtil.notNull(rid,"参数为空");
        logger.info("[根据主键查询对接成果,参数[rid:{}]]",rid);
        return voMapper.findResultVo(rid);
    }

    /**
     * 查询统计数据
     * @param cid 部门id，查询条件，可以为空
     * @param some 1：年:2：季:3：月
     * @return 统计数据
     */
    public ArrayList<StatisticsVO> getBySome(Integer cid,Integer some){
        CheckUtil.notNull(some,"参数为空");
        logger.info("[获取统计数据，参数[cid:{},Some:{}]]",cid,some);
        switch (some){
            case 1: return voMapper.getByYear(cid);
            case 2: return voMapper.getByQuarter(cid);
            case 3: return voMapper.getByMonth(cid);
            default:return voMapper.getByYear(cid);
        }
    }

}

